/**
 * *******************************************************************************
 * Copyright (c) 2008 - 2018 Profactor GmbH, TU Wien ACIN, fortiss GmbH
 *               2022-2023 Martin Erich Jobst
 * 
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 * 
 * SPDX-License-Identifier: EPL-2.0
 * 
 * Contributors:
 *    Gerhard Ebenhofer, Alois Zoitl, Ingo Hegny, Monika Wenger, Martin Jobst
 *      - initial API and implementation and/or initial documentation
 * *******************************************************************************
 */
package org.eclipse.fordiac.ide.model.libraryElement.provider;

import java.util.ArrayList;
import java.util.Collection;

import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.notify.Notifier;

import org.eclipse.emf.edit.provider.ChangeNotifier;
import org.eclipse.emf.edit.provider.ComposeableAdapterFactory;
import org.eclipse.emf.edit.provider.ComposedAdapterFactory;
import org.eclipse.emf.edit.provider.Disposable;
import org.eclipse.emf.edit.provider.IChangeNotifier;
import org.eclipse.emf.edit.provider.IDisposable;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.emf.edit.provider.IItemLabelProvider;
import org.eclipse.emf.edit.provider.IItemPropertySource;
import org.eclipse.emf.edit.provider.INotifyChangedListener;
import org.eclipse.emf.edit.provider.IStructuredItemContentProvider;
import org.eclipse.emf.edit.provider.ITreeItemContentProvider;

import org.eclipse.fordiac.ide.model.libraryElement.util.LibraryElementAdapterFactory;

/**
 * This is the factory that is used to provide the interfaces needed to support Viewers.
 * The adapters generated by this factory convert EMF adapter notifications into calls to {@link #fireNotifyChanged fireNotifyChanged}.
 * The adapters also support Eclipse property sheets.
 * Note that most of the adapters are shared among multiple instances.
 * <!-- begin-user-doc -->
 * <!-- end-user-doc -->
 * @generated
 */
public class LibraryElementItemProviderAdapterFactory extends LibraryElementAdapterFactory implements ComposeableAdapterFactory, IChangeNotifier, IDisposable {
	/**
	 * This keeps track of the root adapter factory that delegates to this adapter factory.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ComposedAdapterFactory parentAdapterFactory;

	/**
	 * This is used to implement {@link org.eclipse.emf.edit.provider.IChangeNotifier}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected IChangeNotifier changeNotifier = new ChangeNotifier();

	/**
	 * This keeps track of all the item providers created, so that they can be {@link #dispose disposed}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected Disposable disposable = new Disposable();

	/**
	 * This keeps track of all the supported types checked by {@link #isFactoryForType isFactoryForType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected Collection<Object> supportedTypes = new ArrayList<Object>();

	/**
	 * This constructs an instance.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public LibraryElementItemProviderAdapterFactory() {
		supportedTypes.add(IEditingDomainItemProvider.class);
		supportedTypes.add(IStructuredItemContentProvider.class);
		supportedTypes.add(ITreeItemContentProvider.class);
		supportedTypes.add(IItemLabelProvider.class);
		supportedTypes.add(IItemPropertySource.class);
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.AdapterConnection} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected AdapterConnectionItemProvider adapterConnectionItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.AdapterConnection}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createAdapterConnectionAdapter() {
		if (adapterConnectionItemProvider == null) {
			adapterConnectionItemProvider = new AdapterConnectionItemProvider(this);
		}

		return adapterConnectionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.AdapterDeclaration} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected AdapterDeclarationItemProvider adapterDeclarationItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.AdapterDeclaration}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createAdapterDeclarationAdapter() {
		if (adapterDeclarationItemProvider == null) {
			adapterDeclarationItemProvider = new AdapterDeclarationItemProvider(this);
		}

		return adapterDeclarationItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.AdapterFB} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected AdapterFBItemProvider adapterFBItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.AdapterFB}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createAdapterFBAdapter() {
		if (adapterFBItemProvider == null) {
			adapterFBItemProvider = new AdapterFBItemProvider(this);
		}

		return adapterFBItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.AdapterType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected AdapterTypeItemProvider adapterTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.AdapterType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createAdapterTypeAdapter() {
		if (adapterTypeItemProvider == null) {
			adapterTypeItemProvider = new AdapterTypeItemProvider(this);
		}

		return adapterTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.Application} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ApplicationItemProvider applicationItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.Application}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createApplicationAdapter() {
		if (applicationItemProvider == null) {
			applicationItemProvider = new ApplicationItemProvider(this);
		}

		return applicationItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.ArraySize} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ArraySizeItemProvider arraySizeItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.ArraySize}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createArraySizeAdapter() {
		if (arraySizeItemProvider == null) {
			arraySizeItemProvider = new ArraySizeItemProvider(this);
		}

		return arraySizeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.Attribute} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected AttributeItemProvider attributeItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.Attribute}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createAttributeAdapter() {
		if (attributeItemProvider == null) {
			attributeItemProvider = new AttributeItemProvider(this);
		}

		return attributeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.AttributeDeclaration} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected AttributeDeclarationItemProvider attributeDeclarationItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.AttributeDeclaration}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createAttributeDeclarationAdapter() {
		if (attributeDeclarationItemProvider == null) {
			attributeDeclarationItemProvider = new AttributeDeclarationItemProvider(this);
		}

		return attributeDeclarationItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.BaseFBType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected BaseFBTypeItemProvider baseFBTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.BaseFBType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createBaseFBTypeAdapter() {
		if (baseFBTypeItemProvider == null) {
			baseFBTypeItemProvider = new BaseFBTypeItemProvider(this);
		}

		return baseFBTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.BasicFBType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected BasicFBTypeItemProvider basicFBTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.BasicFBType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createBasicFBTypeAdapter() {
		if (basicFBTypeItemProvider == null) {
			basicFBTypeItemProvider = new BasicFBTypeItemProvider(this);
		}

		return basicFBTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.AutomationSystem} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected AutomationSystemItemProvider automationSystemItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.AutomationSystem}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createAutomationSystemAdapter() {
		if (automationSystemItemProvider == null) {
			automationSystemItemProvider = new AutomationSystemItemProvider(this);
		}

		return automationSystemItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.CFBInstance} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected CFBInstanceItemProvider cfbInstanceItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.CFBInstance}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createCFBInstanceAdapter() {
		if (cfbInstanceItemProvider == null) {
			cfbInstanceItemProvider = new CFBInstanceItemProvider(this);
		}

		return cfbInstanceItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.Color} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ColorItemProvider colorItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.Color}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createColorAdapter() {
		if (colorItemProvider == null) {
			colorItemProvider = new ColorItemProvider(this);
		}

		return colorItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.ColorizableElement} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ColorizableElementItemProvider colorizableElementItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.ColorizableElement}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createColorizableElementAdapter() {
		if (colorizableElementItemProvider == null) {
			colorizableElementItemProvider = new ColorizableElementItemProvider(this);
		}

		return colorizableElementItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.Comment} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected CommentItemProvider commentItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.Comment}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createCommentAdapter() {
		if (commentItemProvider == null) {
			commentItemProvider = new CommentItemProvider(this);
		}

		return commentItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.CommunicationChannel} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected CommunicationChannelItemProvider communicationChannelItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.CommunicationChannel}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createCommunicationChannelAdapter() {
		if (communicationChannelItemProvider == null) {
			communicationChannelItemProvider = new CommunicationChannelItemProvider(this);
		}

		return communicationChannelItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.CommunicationMappingTarget} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected CommunicationMappingTargetItemProvider communicationMappingTargetItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.CommunicationMappingTarget}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createCommunicationMappingTargetAdapter() {
		if (communicationMappingTargetItemProvider == null) {
			communicationMappingTargetItemProvider = new CommunicationMappingTargetItemProvider(this);
		}

		return communicationMappingTargetItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.Compiler} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected CompilerItemProvider compilerItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.Compiler}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createCompilerAdapter() {
		if (compilerItemProvider == null) {
			compilerItemProvider = new CompilerItemProvider(this);
		}

		return compilerItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.CompilerInfo} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected CompilerInfoItemProvider compilerInfoItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.CompilerInfo}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createCompilerInfoAdapter() {
		if (compilerInfoItemProvider == null) {
			compilerInfoItemProvider = new CompilerInfoItemProvider(this);
		}

		return compilerInfoItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.CompositeFBType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected CompositeFBTypeItemProvider compositeFBTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.CompositeFBType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createCompositeFBTypeAdapter() {
		if (compositeFBTypeItemProvider == null) {
			compositeFBTypeItemProvider = new CompositeFBTypeItemProvider(this);
		}

		return compositeFBTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.ConfigurableObject} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ConfigurableObjectItemProvider configurableObjectItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.ConfigurableObject}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createConfigurableObjectAdapter() {
		if (configurableObjectItemProvider == null) {
			configurableObjectItemProvider = new ConfigurableObjectItemProvider(this);
		}

		return configurableObjectItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.ConfigurableMoveFB} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ConfigurableMoveFBItemProvider configurableMoveFBItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.ConfigurableMoveFB}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createConfigurableMoveFBAdapter() {
		if (configurableMoveFBItemProvider == null) {
			configurableMoveFBItemProvider = new ConfigurableMoveFBItemProvider(this);
		}

		return configurableMoveFBItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.ConnectionRoutingData} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ConnectionRoutingDataItemProvider connectionRoutingDataItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.ConnectionRoutingData}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createConnectionRoutingDataAdapter() {
		if (connectionRoutingDataItemProvider == null) {
			connectionRoutingDataItemProvider = new ConnectionRoutingDataItemProvider(this);
		}

		return connectionRoutingDataItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.DataConnection} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected DataConnectionItemProvider dataConnectionItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.DataConnection}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createDataConnectionAdapter() {
		if (dataConnectionItemProvider == null) {
			dataConnectionItemProvider = new DataConnectionItemProvider(this);
		}

		return dataConnectionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.Demultiplexer} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected DemultiplexerItemProvider demultiplexerItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.Demultiplexer}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createDemultiplexerAdapter() {
		if (demultiplexerItemProvider == null) {
			demultiplexerItemProvider = new DemultiplexerItemProvider(this);
		}

		return demultiplexerItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.Device} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected DeviceItemProvider deviceItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.Device}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createDeviceAdapter() {
		if (deviceItemProvider == null) {
			deviceItemProvider = new DeviceItemProvider(this);
		}

		return deviceItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.DeviceType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected DeviceTypeItemProvider deviceTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.DeviceType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createDeviceTypeAdapter() {
		if (deviceTypeItemProvider == null) {
			deviceTypeItemProvider = new DeviceTypeItemProvider(this);
		}

		return deviceTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.ECAction} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ECActionItemProvider ecActionItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.ECAction}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createECActionAdapter() {
		if (ecActionItemProvider == null) {
			ecActionItemProvider = new ECActionItemProvider(this);
		}

		return ecActionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.ECC} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ECCItemProvider eccItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.ECC}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createECCAdapter() {
		if (eccItemProvider == null) {
			eccItemProvider = new ECCItemProvider(this);
		}

		return eccItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.ECState} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ECStateItemProvider ecStateItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.ECState}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createECStateAdapter() {
		if (ecStateItemProvider == null) {
			ecStateItemProvider = new ECStateItemProvider(this);
		}

		return ecStateItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.ECTransition} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ECTransitionItemProvider ecTransitionItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.ECTransition}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createECTransitionAdapter() {
		if (ecTransitionItemProvider == null) {
			ecTransitionItemProvider = new ECTransitionItemProvider(this);
		}

		return ecTransitionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.ErrorMarkerDataType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ErrorMarkerDataTypeItemProvider errorMarkerDataTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.ErrorMarkerDataType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createErrorMarkerDataTypeAdapter() {
		if (errorMarkerDataTypeItemProvider == null) {
			errorMarkerDataTypeItemProvider = new ErrorMarkerDataTypeItemProvider(this);
		}

		return errorMarkerDataTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.ErrorMarkerFBNElement} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ErrorMarkerFBNElementItemProvider errorMarkerFBNElementItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.ErrorMarkerFBNElement}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createErrorMarkerFBNElementAdapter() {
		if (errorMarkerFBNElementItemProvider == null) {
			errorMarkerFBNElementItemProvider = new ErrorMarkerFBNElementItemProvider(this);
		}

		return errorMarkerFBNElementItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.ErrorMarkerInterface} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ErrorMarkerInterfaceItemProvider errorMarkerInterfaceItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.ErrorMarkerInterface}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createErrorMarkerInterfaceAdapter() {
		if (errorMarkerInterfaceItemProvider == null) {
			errorMarkerInterfaceItemProvider = new ErrorMarkerInterfaceItemProvider(this);
		}

		return errorMarkerInterfaceItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.Event} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected EventItemProvider eventItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.Event}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createEventAdapter() {
		if (eventItemProvider == null) {
			eventItemProvider = new EventItemProvider(this);
		}

		return eventItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.EventConnection} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected EventConnectionItemProvider eventConnectionItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.EventConnection}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createEventConnectionAdapter() {
		if (eventConnectionItemProvider == null) {
			eventConnectionItemProvider = new EventConnectionItemProvider(this);
		}

		return eventConnectionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.FB} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected FBItemProvider fbItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.FB}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createFBAdapter() {
		if (fbItemProvider == null) {
			fbItemProvider = new FBItemProvider(this);
		}

		return fbItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.FBNetwork} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected FBNetworkItemProvider fbNetworkItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.FBNetwork}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createFBNetworkAdapter() {
		if (fbNetworkItemProvider == null) {
			fbNetworkItemProvider = new FBNetworkItemProvider(this);
		}

		return fbNetworkItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.FBType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected FBTypeItemProvider fbTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.FBType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createFBTypeAdapter() {
		if (fbTypeItemProvider == null) {
			fbTypeItemProvider = new FBTypeItemProvider(this);
		}

		return fbTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.FunctionFBType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected FunctionFBTypeItemProvider functionFBTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.FunctionFBType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createFunctionFBTypeAdapter() {
		if (functionFBTypeItemProvider == null) {
			functionFBTypeItemProvider = new FunctionFBTypeItemProvider(this);
		}

		return functionFBTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.GlobalConstants} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected GlobalConstantsItemProvider globalConstantsItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.GlobalConstants}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createGlobalConstantsAdapter() {
		if (globalConstantsItemProvider == null) {
			globalConstantsItemProvider = new GlobalConstantsItemProvider(this);
		}

		return globalConstantsItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.Group} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected GroupItemProvider groupItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.Group}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createGroupAdapter() {
		if (groupItemProvider == null) {
			groupItemProvider = new GroupItemProvider(this);
		}

		return groupItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.HiddenElement} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected HiddenElementItemProvider hiddenElementItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.HiddenElement}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createHiddenElementAdapter() {
		if (hiddenElementItemProvider == null) {
			hiddenElementItemProvider = new HiddenElementItemProvider(this);
		}

		return hiddenElementItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.Identification} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected IdentificationItemProvider identificationItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.Identification}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createIdentificationAdapter() {
		if (identificationItemProvider == null) {
			identificationItemProvider = new IdentificationItemProvider(this);
		}

		return identificationItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.Import} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ImportItemProvider importItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.Import}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createImportAdapter() {
		if (importItemProvider == null) {
			importItemProvider = new ImportItemProvider(this);
		}

		return importItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.InputPrimitive} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected InputPrimitiveItemProvider inputPrimitiveItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.InputPrimitive}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createInputPrimitiveAdapter() {
		if (inputPrimitiveItemProvider == null) {
			inputPrimitiveItemProvider = new InputPrimitiveItemProvider(this);
		}

		return inputPrimitiveItemProvider;
	}

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.InterfaceList}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createInterfaceListAdapter() {
		return new InterfaceListItemProvider(this);
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.LibraryElement} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected LibraryElementItemProvider libraryElementItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.LibraryElement}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createLibraryElementAdapter() {
		if (libraryElementItemProvider == null) {
			libraryElementItemProvider = new LibraryElementItemProvider(this);
		}

		return libraryElementItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.Link} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected LinkItemProvider linkItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.Link}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createLinkAdapter() {
		if (linkItemProvider == null) {
			linkItemProvider = new LinkItemProvider(this);
		}

		return linkItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.LocalVariable} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected LocalVariableItemProvider localVariableItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.LocalVariable}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createLocalVariableAdapter() {
		if (localVariableItemProvider == null) {
			localVariableItemProvider = new LocalVariableItemProvider(this);
		}

		return localVariableItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.Mapping} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected MappingItemProvider mappingItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.Mapping}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createMappingAdapter() {
		if (mappingItemProvider == null) {
			mappingItemProvider = new MappingItemProvider(this);
		}

		return mappingItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.MappingTarget} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected MappingTargetItemProvider mappingTargetItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.MappingTarget}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createMappingTargetAdapter() {
		if (mappingTargetItemProvider == null) {
			mappingTargetItemProvider = new MappingTargetItemProvider(this);
		}

		return mappingTargetItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.Multiplexer} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected MultiplexerItemProvider multiplexerItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.Multiplexer}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createMultiplexerAdapter() {
		if (multiplexerItemProvider == null) {
			multiplexerItemProvider = new MultiplexerItemProvider(this);
		}

		return multiplexerItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.OriginalSource} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected OriginalSourceItemProvider originalSourceItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.OriginalSource}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createOriginalSourceAdapter() {
		if (originalSourceItemProvider == null) {
			originalSourceItemProvider = new OriginalSourceItemProvider(this);
		}

		return originalSourceItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.OtherAlgorithm} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected OtherAlgorithmItemProvider otherAlgorithmItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.OtherAlgorithm}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createOtherAlgorithmAdapter() {
		if (otherAlgorithmItemProvider == null) {
			otherAlgorithmItemProvider = new OtherAlgorithmItemProvider(this);
		}

		return otherAlgorithmItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.OtherMethod} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected OtherMethodItemProvider otherMethodItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.OtherMethod}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createOtherMethodAdapter() {
		if (otherMethodItemProvider == null) {
			otherMethodItemProvider = new OtherMethodItemProvider(this);
		}

		return otherMethodItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.OutputPrimitive} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected OutputPrimitiveItemProvider outputPrimitiveItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.OutputPrimitive}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createOutputPrimitiveAdapter() {
		if (outputPrimitiveItemProvider == null) {
			outputPrimitiveItemProvider = new OutputPrimitiveItemProvider(this);
		}

		return outputPrimitiveItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.Position} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected PositionItemProvider positionItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.Position}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createPositionAdapter() {
		if (positionItemProvider == null) {
			positionItemProvider = new PositionItemProvider(this);
		}

		return positionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.PositionableElement} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected PositionableElementItemProvider positionableElementItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.PositionableElement}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createPositionableElementAdapter() {
		if (positionableElementItemProvider == null) {
			positionableElementItemProvider = new PositionableElementItemProvider(this);
		}

		return positionableElementItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.Primitive} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected PrimitiveItemProvider primitiveItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.Primitive}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createPrimitiveAdapter() {
		if (primitiveItemProvider == null) {
			primitiveItemProvider = new PrimitiveItemProvider(this);
		}

		return primitiveItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.Resource} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ResourceItemProvider resourceItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.Resource}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createResourceAdapter() {
		if (resourceItemProvider == null) {
			resourceItemProvider = new ResourceItemProvider(this);
		}

		return resourceItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.ResourceTypeName} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ResourceTypeNameItemProvider resourceTypeNameItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.ResourceTypeName}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createResourceTypeNameAdapter() {
		if (resourceTypeNameItemProvider == null) {
			resourceTypeNameItemProvider = new ResourceTypeNameItemProvider(this);
		}

		return resourceTypeNameItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.ResourceType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ResourceTypeItemProvider resourceTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.ResourceType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createResourceTypeAdapter() {
		if (resourceTypeItemProvider == null) {
			resourceTypeItemProvider = new ResourceTypeItemProvider(this);
		}

		return resourceTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.ResourceTypeFB} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ResourceTypeFBItemProvider resourceTypeFBItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.ResourceTypeFB}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createResourceTypeFBAdapter() {
		if (resourceTypeFBItemProvider == null) {
			resourceTypeFBItemProvider = new ResourceTypeFBItemProvider(this);
		}

		return resourceTypeFBItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.Segment} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected SegmentItemProvider segmentItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.Segment}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createSegmentAdapter() {
		if (segmentItemProvider == null) {
			segmentItemProvider = new SegmentItemProvider(this);
		}

		return segmentItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.SegmentType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected SegmentTypeItemProvider segmentTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.SegmentType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createSegmentTypeAdapter() {
		if (segmentTypeItemProvider == null) {
			segmentTypeItemProvider = new SegmentTypeItemProvider(this);
		}

		return segmentTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.Service} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ServiceItemProvider serviceItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.Service}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createServiceAdapter() {
		if (serviceItemProvider == null) {
			serviceItemProvider = new ServiceItemProvider(this);
		}

		return serviceItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.ServiceSequence} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ServiceSequenceItemProvider serviceSequenceItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.ServiceSequence}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createServiceSequenceAdapter() {
		if (serviceSequenceItemProvider == null) {
			serviceSequenceItemProvider = new ServiceSequenceItemProvider(this);
		}

		return serviceSequenceItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.ServiceTransaction} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ServiceTransactionItemProvider serviceTransactionItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.ServiceTransaction}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createServiceTransactionAdapter() {
		if (serviceTransactionItemProvider == null) {
			serviceTransactionItemProvider = new ServiceTransactionItemProvider(this);
		}

		return serviceTransactionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.ServiceInterface} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ServiceInterfaceItemProvider serviceInterfaceItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.ServiceInterface}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createServiceInterfaceAdapter() {
		if (serviceInterfaceItemProvider == null) {
			serviceInterfaceItemProvider = new ServiceInterfaceItemProvider(this);
		}

		return serviceInterfaceItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.ServiceInterfaceFBType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ServiceInterfaceFBTypeItemProvider serviceInterfaceFBTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.ServiceInterfaceFBType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createServiceInterfaceFBTypeAdapter() {
		if (serviceInterfaceFBTypeItemProvider == null) {
			serviceInterfaceFBTypeItemProvider = new ServiceInterfaceFBTypeItemProvider(this);
		}

		return serviceInterfaceFBTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.SimpleECAction} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected SimpleECActionItemProvider simpleECActionItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.SimpleECAction}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createSimpleECActionAdapter() {
		if (simpleECActionItemProvider == null) {
			simpleECActionItemProvider = new SimpleECActionItemProvider(this);
		}

		return simpleECActionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.SimpleECState} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected SimpleECStateItemProvider simpleECStateItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.SimpleECState}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createSimpleECStateAdapter() {
		if (simpleECStateItemProvider == null) {
			simpleECStateItemProvider = new SimpleECStateItemProvider(this);
		}

		return simpleECStateItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.SimpleFBType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected SimpleFBTypeItemProvider simpleFBTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.SimpleFBType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createSimpleFBTypeAdapter() {
		if (simpleFBTypeItemProvider == null) {
			simpleFBTypeItemProvider = new SimpleFBTypeItemProvider(this);
		}

		return simpleFBTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.STAlgorithm} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected STAlgorithmItemProvider stAlgorithmItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.STAlgorithm}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createSTAlgorithmAdapter() {
		if (stAlgorithmItemProvider == null) {
			stAlgorithmItemProvider = new STAlgorithmItemProvider(this);
		}

		return stAlgorithmItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.STFunction} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected STFunctionItemProvider stFunctionItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.STFunction}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createSTFunctionAdapter() {
		if (stFunctionItemProvider == null) {
			stFunctionItemProvider = new STFunctionItemProvider(this);
		}

		return stFunctionItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.STFunctionBody} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected STFunctionBodyItemProvider stFunctionBodyItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.STFunctionBody}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createSTFunctionBodyAdapter() {
		if (stFunctionBodyItemProvider == null) {
			stFunctionBodyItemProvider = new STFunctionBodyItemProvider(this);
		}

		return stFunctionBodyItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.STMethod} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected STMethodItemProvider stMethodItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.STMethod}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createSTMethodAdapter() {
		if (stMethodItemProvider == null) {
			stMethodItemProvider = new STMethodItemProvider(this);
		}

		return stMethodItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.StructManipulator} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected StructManipulatorItemProvider structManipulatorItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.StructManipulator}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createStructManipulatorAdapter() {
		if (structManipulatorItemProvider == null) {
			structManipulatorItemProvider = new StructManipulatorItemProvider(this);
		}

		return structManipulatorItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.SubAppType} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected SubAppTypeItemProvider subAppTypeItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.SubAppType}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createSubAppTypeAdapter() {
		if (subAppTypeItemProvider == null) {
			subAppTypeItemProvider = new SubAppTypeItemProvider(this);
		}

		return subAppTypeItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.SystemConfiguration} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected SystemConfigurationItemProvider systemConfigurationItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.SystemConfiguration}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createSystemConfigurationAdapter() {
		if (systemConfigurationItemProvider == null) {
			systemConfigurationItemProvider = new SystemConfigurationItemProvider(this);
		}

		return systemConfigurationItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.TypedConfigureableObject} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected TypedConfigureableObjectItemProvider typedConfigureableObjectItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.TypedConfigureableObject}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createTypedConfigureableObjectAdapter() {
		if (typedConfigureableObjectItemProvider == null) {
			typedConfigureableObjectItemProvider = new TypedConfigureableObjectItemProvider(this);
		}

		return typedConfigureableObjectItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected TypedSubAppItemProvider typedSubAppItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.TypedSubApp}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createTypedSubAppAdapter() {
		if (typedSubAppItemProvider == null) {
			typedSubAppItemProvider = new TypedSubAppItemProvider(this);
		}

		return typedSubAppItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected UntypedSubAppItemProvider untypedSubAppItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.UntypedSubApp}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createUntypedSubAppAdapter() {
		if (untypedSubAppItemProvider == null) {
			untypedSubAppItemProvider = new UntypedSubAppItemProvider(this);
		}

		return untypedSubAppItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.Value} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected ValueItemProvider valueItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.Value}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createValueAdapter() {
		if (valueItemProvider == null) {
			valueItemProvider = new ValueItemProvider(this);
		}

		return valueItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected VarDeclarationItemProvider varDeclarationItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.VarDeclaration}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createVarDeclarationAdapter() {
		if (varDeclarationItemProvider == null) {
			varDeclarationItemProvider = new VarDeclarationItemProvider(this);
		}

		return varDeclarationItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.VersionInfo} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected VersionInfoItemProvider versionInfoItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.VersionInfo}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createVersionInfoAdapter() {
		if (versionInfoItemProvider == null) {
			versionInfoItemProvider = new VersionInfoItemProvider(this);
		}

		return versionInfoItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.With} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected WithItemProvider withItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.With}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createWithAdapter() {
		if (withItemProvider == null) {
			withItemProvider = new WithItemProvider(this);
		}

		return withItemProvider;
	}

	/**
	 * This keeps track of the one adapter used for all {@link org.eclipse.fordiac.ide.model.libraryElement.MemberVarDeclaration} instances.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected MemberVarDeclarationItemProvider memberVarDeclarationItemProvider;

	/**
	 * This creates an adapter for a {@link org.eclipse.fordiac.ide.model.libraryElement.MemberVarDeclaration}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter createMemberVarDeclarationAdapter() {
		if (memberVarDeclarationItemProvider == null) {
			memberVarDeclarationItemProvider = new MemberVarDeclarationItemProvider(this);
		}

		return memberVarDeclarationItemProvider;
	}

	/**
	 * This returns the root adapter factory that contains this factory.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public ComposeableAdapterFactory getRootAdapterFactory() {
		return parentAdapterFactory == null ? this : parentAdapterFactory.getRootAdapterFactory();
	}

	/**
	 * This sets the composed adapter factory that contains this factory.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void setParentAdapterFactory(ComposedAdapterFactory parentAdapterFactory) {
		this.parentAdapterFactory = parentAdapterFactory;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public boolean isFactoryForType(Object type) {
		return supportedTypes.contains(type) || super.isFactoryForType(type);
	}

	/**
	 * This implementation substitutes the factory itself as the key for the adapter.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Adapter adapt(Notifier notifier, Object type) {
		return super.adapt(notifier, this);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public Object adapt(Object object, Object type) {
		if (isFactoryForType(type)) {
			Object adapter = super.adapt(object, type);
			if (!(type instanceof Class<?>) || (((Class<?>)type).isInstance(adapter))) {
				return adapter;
			}
		}

		return null;
	}

	/**
	 * Associates an adapter with a notifier via the base implementation, then records it to ensure it will be disposed.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	protected void associate(Adapter adapter, Notifier target) {
		super.associate(adapter, target);
		if (adapter != null) {
			disposable.add(adapter);
		}
	}

	/**
	 * This adds a listener.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void addListener(INotifyChangedListener notifyChangedListener) {
		changeNotifier.addListener(notifyChangedListener);
	}

	/**
	 * This removes a listener.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void removeListener(INotifyChangedListener notifyChangedListener) {
		changeNotifier.removeListener(notifyChangedListener);
	}

	/**
	 * This delegates to {@link #changeNotifier} and to {@link #parentAdapterFactory}.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void fireNotifyChanged(Notification notification) {
		changeNotifier.fireNotifyChanged(notification);

		if (parentAdapterFactory != null) {
			parentAdapterFactory.fireNotifyChanged(notification);
		}
	}

	/**
	 * This disposes all of the item providers created by this factory. 
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	@Override
	public void dispose() {
		disposable.dispose();
	}

}
